// utils/errorHandler.js
// 全局错误处理

/**
 * 处理API请求错误
 */
export function handleApiError(error, defaultMessage = '操作失败') {
  console.error('API Error:', error)
  
  let message = defaultMessage
  
  if (error && error.message) {
    message = error.message
  } else if (typeof error === 'string') {
    message = error
  }
  
  wx.showToast({
    title: message,
    icon: 'none',
    duration: 2000
  })
  
  return message
}

/**
 * 处理网络错误
 */
export function handleNetworkError() {
  wx.showToast({
    title: '网络连接失败',
    icon: 'none',
    duration: 2000
  })
}

/**
 * 处理登录过期
 */
export function handleAuthError() {
  wx.showModal({
    title: '提示',
    content: '登录已过期，请重新登录',
    showCancel: false,
    success: () => {
      wx.removeStorageSync('userInfo')
      wx.removeStorageSync('token')
      wx.reLaunch({
        url: '/pages/login/login'
      })
    }
  })
}

/**
 * 全局错误处理
 */
export function globalErrorHandler(error) {
  console.error('Global Error:', error)
  
  if (error.statusCode === 401) {
    handleAuthError()
  } else if (error.statusCode >= 500) {
    wx.showToast({
      title: '服务器错误',
      icon: 'none'
    })
  } else if (error.errMsg && error.errMsg.indexOf('request:fail') > -1) {
    handleNetworkError()
  } else {
    handleApiError(error)
  }
}

/**
 * 表单验证错误提示
 */
export function showValidationError(message) {
  wx.showToast({
    title: message,
    icon: 'none',
    duration: 2000
  })
}
